﻿using System;
using System.Data;
using System.Text;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using GC2.Bussines;
using GC2.Bussines.BMAdmin;
using GC2.Entities.Admin;
using GC2.Entities.Seguridad;
using GC2.ExceptionHandler;
using GC2.Entities.Comunes;


public partial class Informes_ListaClientes : GenericPage
{
    #region Propiedades
    Usuarios usuario = new Usuarios();
    Clientes clienteActual = new Clientes();
    List<Clientes> listClientes = new List<Clientes>();
    private ExceptionConstructor exNew = new ExceptionConstructor();
    #endregion

    #region Controles

    #region Page_Load
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            SetearCultura();
            SetearConexion();
            if (!this.IsPostBack)
            {
                usuario = (Usuarios)Session["UsuarioActual"];
                Limpiar();

                Clientes cliente = new Clientes();
                cliente = (Clientes)Session["Cliente"];
                CargarCombo();
                trCumple.Visible = false;
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region btnCancelar_Click
    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        Response.Redirect("~/Seguridad/Default.aspx", false);
    }
    #endregion

    #region gvClientes_PageIndexChanging
    protected void gvClientes_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        try
        {
            gvClientes.PageIndex = e.NewPageIndex;
            CargarGrilla();
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region btnVer_Click
    protected void btnVer_Click(object sender, EventArgs e)
    {
        try
        {

            BMClientes bmClientes = new BMClientes(Connection);
            Clientes cliente = new Clientes();
            List<Clientes> listaClientes = new List<Clientes>();
            cliente.Id_Estado = 1;
            if (rdbCumple.Checked)
            {
                cliente.MesNac = Convert.ToUInt16(cboMes.SelectedValue);
            }

            listaClientes = bmClientes.BMClientesSearch(cliente);
            lblCantidad.Text = listaClientes.Count.ToString();
           
            Session["listaClientes"] = listaClientes;
            gvClientes.DataSource = listaClientes;
            gvClientes.DataBind();
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region rdbLista_CheckedChanged
    protected void rdbLista_CheckedChanged(object sender, System.EventArgs e)
    {
        try
        {
            if (rdbLista.Checked)
            {
                rdbCumple.Checked = false;
                trEstado.Visible = true;
                trCumple.Visible = false;
                lblAccion.Text = "Clientes por Estado";
                Limpiar();
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region rdbCumple_CheckedChanged
    protected void rdbCumple_CheckedChanged(object sender, System.EventArgs e)
    {
        try
        {
            if (rdbCumple.Checked)
            {
                rdbLista.Checked = false;
                trEstado.Visible = false;
                trCumple.Visible = true;
                lblAccion.Text = "Seleccione mes de Cumpleaños";
                Limpiar();
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region btnInforme_Click
    protected void btnInforme_Clic(object sender, EventArgs e)
    {
        try
        {
            if (Session["listaClientes"] != null)
            {
                List<Clientes> listaClientes = (List<Clientes>)Session["listaClientes"];
                if (listaClientes.Count > 0)
                {
                    if (rdbLista.Checked)
                    {
                        // Clientes por estado
                        Session["iReporte"] = 1;  
                    }

                    if (rdbCumple.Checked)
                    {
                        // Clientes por cumpleaños
                        Session["iReporte"] = 2;
                        Session["Mes"] = cboMes.SelectedItem.Text;
                    }

                    registrarScript();
                }
                else
                {
                    lblAccion.Text = "No hay datos para generar Informe";
                }
            }
            else
            {
                lblAccion.Text = "No hay datos para generar Informe";
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #endregion

    #region Métodos

    #region Limpiar
    protected void Limpiar()
    {
        try
        {
            List<Clientes> listaClientes = new List<Clientes>();
            Session["listaClientes"] = listaClientes;
            CargarGrilla();
            lblCantidad.Text = "";
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region CargarCombo
    protected void CargarCombo()
    {
        try
        {
            List<Meses> listaMeses = ListaMeses();
            foreach (Meses mes in listaMeses)
            {
                ListItem liItem = new ListItem();
                liItem.Value = mes.Mes.ToString();
                liItem.Text = mes.Nombre;
                cboMes.Items.Add(liItem);
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region CargarGrilla
    protected void CargarGrilla()
    {
        try
        {
            List<Clientes> listaClientes = new List<Clientes>();
            listaClientes = (List<Clientes>)Session["listaClientes"];

            gvClientes.DataSource = listaClientes;
            gvClientes.DataBind();
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region registrarScript

    protected void registrarScript()
    {
        // dispararPopUp(hacePostBack)
        StringBuilder scriptSession = new StringBuilder("<script language='javascript' type='text/javascript'>");
        scriptSession.Append("function mostrarReporte()");
        scriptSession.Append("{");
        scriptSession.Append("var stringURL = '../Informes/RptClientesView.aspx';");
        scriptSession.Append("var opciones='toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=yes';");
        scriptSession.Append("var newWin = window.open(stringURL, 'PopUp" + DateTime.Now.Ticks.ToString() + "', opciones);");
        scriptSession.Append("}");
        scriptSession.Append("mostrarReporte();");
        scriptSession.Append("</script>");

        Page.ClientScript.RegisterStartupScript(this.GetType(), "Reporte" + Session["iReporte"].ToString(), scriptSession.ToString());
    }
    #endregion

    #endregion

}
